#include <stdio.h>

int main()
{
    // 指针：变量;指针的数据类型：(数据类型) * ：int*
    // int *p = NULL;              // 指针用之前初始化为空
    // printf("%ld\n", sizeof(p)); // 指针占8个字节(64位的)；如果是32位，占4字节；

    // // 指针变量 存 内存地址
    // int a = 10;

    // //&取变量的地址符号
    // p = &a;

    // //%p 打印地址的值，16进制
    // printf("%p\n", p);

    // //* 取值符号：取指针中存的地址的内存值
    // printf("%d\n", *p);

    // // 用 *p 修改内存中的值
    // *p = 100;
    // printf("a=%d\n", a);

    // p = 200; // 修改地址的值
    // // 访问非法地址，导致内存错误；
    // // 存有非法地址的指针：野指针
    // printf("a=%d\n", *p);

    // // 当指针不再使用时，置空
    // p = NULL; // 空指针

    // 二级指针
    int a =10;
    int *p=&a;
    int **p2 = &p;
    printf("%d\n", **p2);//a的值

    //  *p2 == p
    //  *p2 == &a
    // **p2 == a 


    return 0;
}
